The invention relates generally to content protection, and more particularly to implementing portable content protection for securing embedded secrets in software.
Many commercial entities offer sensitive software-based content to different users. One scenario for dissemination of protected content involves electronically distributing content including software, books, music, and video over a network to systems and/or devices. However, the distributed content, such as software programs may be prone to different kinds of attacks such as a direct attack by an otherwise legitimate end user and an indirect attack by a remote hacker or an automated attack. For example, many software tools may be deployed to carry out different types of automated attacks to extract secrets from the protected content. Against reverse engineering and other attacks set forth above, organizations may have to defend software integrity of the code, enabling safe deployment in hostile environments. Protection of copyright and corporate information, however, remains a challenge as unprotected data or code may be easily copied and broadcast to hundreds of millions of Internet users, for instance. In addition, emergence of open platforms for content playback makes content even more vulnerable to hostile attacks.
To this end, some form of protection may be applied to content, e.g., to the content owned by a particular party that has paid for the right to use the content and has agreed to abide by the usage terms. In this manner, content protection may allow an authorized viewer full access to the content but inhibit a pirate user from making illicit copies or extracting embedded secrets. Content protection may involve producing tamper-resistant software, designed to make it difficult to observe the execution of the code. For securing content, such protection may be applied in conjunction with cryptography, which is complementary to tamper-resistant software. Although cryptography works well in an environment, where both the sender and receiver of the transmission are trusted parties, attacks on software deployed in hostile environments from malicious software and ill-intended users are unavoidable. Therefore, conventional software implementations of cryptographic algorithms may not be sufficient, particularly against many sophisticated attacks involving a hostile user or automated attack tool that may access and control the execution environment. With the emergence of software automated attack tools, statically hiding secrets from disclosure in the code may no longer be adequate either.
In particular, protecting embedded secrets, such as proprietary algorithms and cryptographic keys through both space (in the code) and time (frequent renewal) may involve making it difficult to modify the intended behavior of a piece of software. When this need is combined with the need to distribute software in architectural neutral formats that contain much of the same information as the original source code, however, the distributable compiled software become relatively easy to decompile, revealing the secrets to malicious reverse engineering attacks, as an example. Moreover, devising tamper-resistant software which may fail in an unobvious manner without creating any information that is useful to an attacker may be difficult because making software robust to changes while maintaining fragility to any undesired changes from the attacker in that software are two opposing requirements.
Thus, there is a continuing need for better ways to implement portable content protection, especially protecting secrets embedded in software.